package com.ruoyi.pingan.fymodule.separateSetting.categorytemplate.service;

import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import com.ruoyi.pingan.fymodule.separateSetting.categorytemplate.entity.FywCategoryTemplate;
import com.ruoyi.pingan.fymodule.separateSetting.categorytemplate.entity.FywCategoryTemplateDto;
import com.ruoyi.pingan.fymodule.separateSetting.categorytemplate.param.FywCategoryTemplateAddParam;
import com.ruoyi.pingan.fymodule.separateSetting.categorytemplate.param.FywCategoryTemplateEditParam;
import com.ruoyi.pingan.fymodule.separateSetting.categorytemplate.param.FywCategoryTemplateIdParam;
import com.ruoyi.pingan.fymodule.separateSetting.categorytemplate.param.FywCategoryTemplatePageParam;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

/**
 * 分账品类模板表Service接口
 *
 * @author zjf
 * @date  2025/07/29 15:14
 **/
public interface FywCategoryTemplateService extends IService<FywCategoryTemplate> {

    /**
     * 获取分账品类模板表分页
     *
     * @author zjf
     * @date  2025/07/29 15:14
     */
    Page<FywCategoryTemplateDto> page(FywCategoryTemplatePageParam fywCategoryTemplatePageParam);


    /**
     * 新增返回商品大类
     *
     * @author zjf
     * @date  2025/07/29 15:14
     */
    FywCategoryTemplateDto newCategory(FywCategoryTemplateAddParam fywCategoryTemplateAddParam);

    /**
     * 添加分账品类模板表
     *
     * @author zjf
     * @date  2025/07/29 15:14
     */
    void add(FywCategoryTemplateAddParam fywCategoryTemplateAddParam);

    /**
     * 编辑分账品类模板表
     *
     * @author zjf
     * @date  2025/07/29 15:14
     */
    void edit(FywCategoryTemplateEditParam fywCategoryTemplateEditParam);

    /**
     * 删除分账品类模板表
     *
     * @author zjf
     * @date  2025/07/29 15:14
     */
    void delete(FywCategoryTemplateIdParam fywCategoryTemplateIdParam);

    /**
     * 是否默认设置
     *
     * @author zjf
     * @date  2025/07/31 13:40
     */
    void defaultset(FywCategoryTemplateIdParam fywCategoryTemplateIdParam);

    /**
     * 获取分账品类模板表详情
     *
     * @author zjf
     * @date  2025/07/29 15:14
     */
    FywCategoryTemplate detail(FywCategoryTemplateIdParam fywCategoryTemplateIdParam);

    /**
     * 获取分账品类模板表详情
     *
     * @author zjf
     * @date  2025/07/29 15:14
     **/
    FywCategoryTemplate queryEntity(String id);

    /**
     * 下载分账品类模板表导入模板
     *
     * @author zjf
     * @date  2025/07/29 15:14
     */
    void downloadImportTemplate(HttpServletResponse response) throws IOException;

    /**
     * 导入分账品类模板表
     *
     * @author zjf
     * @date  2025/07/29 15:14
     **/
    JSONObject importData(MultipartFile file);

    /**
     * 导出分账品类模板表
     *
     * @author zjf
     * @date  2025/07/29 15:14
     */
    void exportData(List<FywCategoryTemplateIdParam> fywCategoryTemplateIdParamList, HttpServletResponse response) throws IOException;
}
